package com.lanou.controller;

import com.lanou.entity.Tag;
import com.lanou.service.TagService;
import com.lanou.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @ClassName TagController
 * @Description TODO
 * @Author chenzhaobao
 * @Date 2025年08月13日 11:16
 * @Version 1.0
 */
@RestController
@RequestMapping("/tag")
public class TagController {

    @Autowired
    private TagService tagService;

    /**
     * 新增标签
     */
    @PostMapping
    public R addTag(@RequestBody Tag tag) {
        int result = tagService.addTag(tag);
        return result > 0 ? R.ok("标签添加成功") : R.fail("标签添加失败");
    }

    /**
     * 根据ID删除标签
     */
    @DeleteMapping("/{id}")
    public R deleteTag(@PathVariable Integer id) {
        int result = tagService.deleteTagById(id);
        return result > 0 ? R.ok("标签删除成功") : R.fail("标签删除失败");
    }

    /**
     * 批量删除标签
     */
    @DeleteMapping("/batch")
    public R deleteTags(@RequestBody List<Integer> ids) {
        int result = tagService.deleteTagsByIds(ids);
        return result > 0 ? R.ok("标签批量删除成功，共删除" + result + "条记录") : R.fail("标签批量删除失败");
    }

    /**
     * 更新标签
     */
    @PutMapping
    public R updateTag(@RequestBody Tag tag) {
        int result = tagService.updateTag(tag);
        return result > 0 ? R.ok("标签更新成功") : R.fail("标签更新失败");
    }

    /**
     * 根据ID查询标签
     */
    @GetMapping("/{id}")
    public R getTagById(@PathVariable Integer id) {
        Tag tag = tagService.getTagById(id);
        return tag != null ? R.ok(tag) : R.fail("未查询到标签信息");
    }

    /**
     * 查询所有标签
     */
    @GetMapping
    public R getAllTags() {
        List<Tag> tags = tagService.getAllTags();
        return R.ok(tags);
    }

    /**
     * 根据咨询师ID查询关联的标签
     */
    @GetMapping("/consultant/{consultantId}")
    public R getTagsByConsultantId(@PathVariable Integer consultantId) {
        List<Tag> tags = tagService.getTagsByConsultantId(consultantId);
        return R.ok(tags);
    }
}
